package modelo.fabricas;

import modelo.centrales.CentralEolica;
import modelo.centrales.CentralMineral;
import modelo.centrales.CentralNuclear;
import modelo.excepciones.YaHayUnaConstruccionTerrestreEnLaUbicacionDeseadaException;
import modelo.mapa.Mapa;
import modelo.mapa.Ubicacion;

public class FabricaDeCentral {

    public CentralEolica crearCentralEolica(Ubicacion unaUbicacion)
    {
        if(Mapa.getInstance().obtenerHectareaSegunUbicacion(unaUbicacion).obtenerConstruccionTerrestre() == null )
        {               
            CentralEolica centralEolica = new CentralEolica(unaUbicacion);
            Mapa.getInstance().obtenerHectareaSegunUbicacion(unaUbicacion).construccionTerrestre(centralEolica);//aca se contruye en la hectarea
            return  centralEolica;
        }
        else
        {
            throw new YaHayUnaConstruccionTerrestreEnLaUbicacionDeseadaException();
        }
    }
    
    public CentralMineral crearCentralMineral(Ubicacion unaUbicacion)
    {
        if(Mapa.getInstance().obtenerHectareaSegunUbicacion(unaUbicacion).obtenerConstruccionTerrestre() == null )
        {               
            CentralMineral centralMineral = new CentralMineral(unaUbicacion);                       
            Mapa.getInstance().obtenerHectareaSegunUbicacion(unaUbicacion).construccionTerrestre(centralMineral);//aca se contruye en la hectarea
            return  centralMineral;
        }
        else
        {
            throw new YaHayUnaConstruccionTerrestreEnLaUbicacionDeseadaException();
        }
    }

    public CentralNuclear crearCentralNuclear(Ubicacion unaUbicacion) 
    {
        if(Mapa.getInstance().obtenerHectareaSegunUbicacion(unaUbicacion).obtenerConstruccionTerrestre() == null )
        {               
            CentralNuclear centralNuclear = new CentralNuclear(unaUbicacion);
            Mapa.getInstance().obtenerHectareaSegunUbicacion(unaUbicacion).construccionTerrestre(centralNuclear);//aca se contruye en la hectarea
            return  centralNuclear;
        }
        else
        {
            throw new YaHayUnaConstruccionTerrestreEnLaUbicacionDeseadaException();
        }
    }
}
